The subject matter of the present invention relates to an integrated data communication and data access system, and more particularly, to a data communication system adapted for practicing an event in a first application, creating a data object by the first application during the practice of the event, and communicating between the first application and a cache memory and a database following the practice of the event by independently storing the data object in the cache memory and in the database during a persistant or transient storage state; and to a data access system adapted for independently accessing the database by a second application to retrieve the data object, determining an interest by the second application in subsequently created ones of the data object, expressing the second application's interest in the data objects by transmitting an interest object from the second application to the first application via a server application, and transmitting the subsequently created ones of the data object directly from the first application to the second application.
The "Description of the Preferred Embodiment" is divided into two parts: (1) Part 1 (Distributed Framework for Intertask Communication Between Workstation Applications) which is set forth in prior pending application Ser. No. 08/758,833 filed Dec. 4, 1996 and entitled "Distributed Framework for Intertask Communication Between Workstation Applications" and in prior pending provisional application Ser. No. 60/023,945 filed Aug. 19, 1996 and entitled "Distributed Framework for Inter-Process Communication Between Workstation Applications", and (2) Part 2 (Integrated Data Communication and Data Access System including the Application Data Interface) which is set forth in prior pending provisional application Ser. No. 60/023,689 filed Aug. 15, 1996 and entitled "Application Data Interface (ADI)".
Computer progams that operate with a network often have multiple programs operating concurrently. It is frequently necessary for information, such as events, to be transferred from one program to another, either within a single workstation or across a network of interconnected computer workstations. An operator at one of the workstations may process information by using different programs operating concurrently in the workstation or across the network of workstations. The operator may also retrieve information by using a multiple number of computer programs executing concurrently in the single workstation or across the network of interconnected workstations. It is therefore important that information be quickly and easily transferred between the multiple number of programs operating in the one or more interconnected workstations.
Windowing software technology is applied where it is important for an operator to display and interact with multiple programs executing concurrently in a computer system comprising one or more interconnected workstations. A "window" is defined to be a portion of a display screen, such as a cathode ray tube (CRT). The window covers less than the entirety of the screen. As a result, there may be a multiple number of windows on the screen at one time. Typically, the user moves a cursor around the screen by use of an input device known as a mouse or by use of multiple keys on a keyboard. The cursor can be moved from one window to another on the screen, and, when the cursor is present within a particular window on the screen, the user/operator is placed in communication with the application program which generated that particular window on the screen. As a result, the operator may access a multiple number of different application programs thereby accomplishing multiple tasks without having to load a new program each time a new task must be performed.
However, when concurrently accessing a multiple number of different application programs executing in a workstation or across a network of workstations, is is often necessary for a user/operator to transfer information from one windowed program executing in a first workstation to another windowed program executing in either the first workstation or in a second, different workstation connected to the first workstation across the network. Transferring information between programs operating in a windowing environment is disclosed in this specification; however, such a windowing environment is not necessary in order to practice the invention of this specification as claimed.
There are at least three conventional techniques for transferring information between concurrently operating programs in a computer system.
The first conventional technique is called "cut and paste". This comprises pointing to and selecting information such as text or data in one window to highlight it and thereby separate it from the remaining information in the window. The user presses a special button or key which moves the selected information to an area of memory specially designated by the operating system and known as the "paste memory" or "clipboard". The user then moves the cursor to another window which is adapted to receive the information. A "paste button" or command is invoked by the user to retrieve the stored information from the designated memory area and place it at the location of the cursor. Note that all steps of this process are carried out by the user.
The second conventional technique establishes a programmed connection between two programs, each of which may display information in a window. Both programs must be designed to respond to a predetermined input command that causes information to be shifted from one program to another. This operation may also be entirely under the control of the user and requires a user input in order to function. Each communication path between pairs of programs must be programmed into the code of both programs, which creates an inflexible system. It is also difficult to add new communication paths or to change existing communication paths.
The third conventional technique is described in U.S. Pat. No. 5,448,738 to Good et al issued Sep. 5, 1995, and in European Patent Application number 0 380 211 published on Aug. 1, 1990 and entitled "Method for Information Communication between Concurrently Operating Computer Programs" to William E. Good et al (hereinafter called "the Good et al disclosure"), the disclosures of which are incorporated by reference into the specification of this application. In the Good et al disclosure, the user interfaces with application programs through one or more window displays and an input device on a computer workstation. One or more information codes and one or more corresponding application programs are registered with a dispatcher program (otherwise known as a "server"). As a result, a list is formed in the dispatcher program, the list including a plurality of information codes and a corresponding plurality of application program identifiers. Then, when a first application program wants to send event information to another concurrently executing second application program, a template, which includes event information and a corresponding information code, is generated by the first application program and the template is transmitted by the first application program to the dispatcher program. The information code in the template from the first application program is compared with the information code in the list registered with the dispatcher program. If a match between information codes is found, the event information associated with the information code in the template is transmitted to the application program that is associated with the information code in the list registered with the dispatcher program.
The Good et al disclosure is similar to other conventional, prior art tools for enabling inter-process communication between application programs, all of which are based on "client-server techniques". Examples of such conventional tools include the "X Window System" and Sun's "Tooltalk". In the Good et al disclosure and the other conventional tools, when using the prior art client-server techniques, all of the data to be communicated between concurrently executing computer program applications must be routed through a server program (the "server program" being similar to the "dispatcher program" in the Good et al disclosure). If many concurrently executing program applications exist in the network, the server or dispatcher may have too many event messages to transmit at any one time. This results in slower throughput as well as increased network traffic. In addition, when using the prior art client-server technique, the user operator executing a first application program can send only certain preselected event information messages to a second application program. That is, the user can send only a fixed set of predefined event information messages which are allowed by the system network; he cannot define or customize his own event information messages for transmission to the second application program. For example, if a font size was changed in one application, using the conventional client-server technique (where all event messages must be routed through the server), there was no way to communicate the changed font size, changed in one application, to any other application in the network because the "changed font size" was not among the fixed set of predefined event information messages allowed for transmission from one application to another application in the network. In addition, when using the conventional client-server technique, particular event information data must always be communicated from a first computer program application to a server program and from the server program to a second program application. Yet, that server program may not know if any other program applications are interested in receiving that particular event data. As a result, when the server receives the particular event information data from the first program application,(the server must then determine if any other applications are interested in receiving that particular event data. If no other applications are interested in receiving the particular event data, the server program wasted its resources in handling the particular event data because it will never be communicated to any other application.
Furthermore, data communicated while using the conventional tools are poorly structured (forming "globs") and provide no mechanism for checking for errors in the data communicated. It is the responsibility of the application programs to interpret the data in the correct manner and handle error conditions. Therefore, when using the conventional tools, the ability of the application programmer to inter-communicate complex data structures between concurrently executing computer program applications is very limited.
As noted earlier, the conventional tools do not provide a mechanism which would allow application programmers to selectively extend or customize the type of events and/or data which could be inter-communicated between concurrently executing applications executing in one or more computer workstations. As a result, the absence of a sufficiently high level of programming abstraction in these conventional tools requires application programmers to be concerned with low level issues, such as data formats on various platforms and communication rendevous (such as, a known property name of a known window, as in the prior art "X Window System").
Finally, these conventional tools provide no easy way for end-users of applications to control the flow of data and visualize the connectivity between applications.
In addition, the conventional tools had a different interface relative to the invention of this application in connection with methods for dealing with events and persistant storage. When data was written into an executing first application, the writer of that data was required to take specific steps, during the introduction of that data, toward the communication that data to another second application. When the data was introduced to the first application, that data was always communicated to the second application via the dispatcher application; and when the receiving second application received that data from the dispatcher application, the receiving second application did not possess a fine "granularity" with regard to the type of data received. That is, the receiving second application could, for example, receive "well data"; however, the receiving second application could not receive a specific subset or type of that well data.
Therefore, a "new framework" was needed that would allow fast communication and sharing of complex data, allow strong typing of data structures, and provide a degree of extensibility when using application-defined data types and events. In addition, that "new framework" should also allow end users of workstation applications to visualize the connectivity network between workstation applications by enabling the end users sitting at those workstations to control the inter-process data communication between computer program applications which are concurrently executing in one or more computer workstation environments.
The above referenced "new framework" is disclosed in a prior pending application Ser. No. 08/758,833 filed Dec. 4, 1996 entitled "Distributed Framework for Intertask Communication Between Workstation Applications", to Shamim Ahmed and Serge J. Dacic (hereinafter called the "ITC Application"), the disclosure of which is incorporated by reference into this specification.
Although not disclosed in the "ITC Application", the "new framework" utilizes an underlying apparatus called the "Application Data Interface" disclosed in this specification. When the "Application Data Interface" is embodied in the Integrated Data Communication and Data Access System of the present invention, a first application of that System is allowed to independently inquire about the existance of certain newly created data in a database, independently of a second or third application concurrently executing in that System, for the ultimate purpose of possibly expressing interest in and receiving any subsequently created and updated versions of that data which may be generated by the second or third application of that System.
However, conventional systems do not allow a first application in the system to inquire about the existance of certain stored data independently of any other applications concurrently executing in the system. For example, if a conventional system includes concurrently executing first and second applications, if the first application is interested in inquiring about the existance of certain data, it must do so by querying the second application. The first application cannot inquire about the existance of that certain data independently of the second application.
Accordingly, there is a need for an integrated data communication and data access system, including at least a first and a second concurrently executing application program, that will allow the second application to store certain data in a cache memory and a database when the second application sets persistant or a transient storage state thereby allowing the first application to independently inquire about the existance of such certain data, independently of the second application, by querying the database for such certain data for the ultimate purpose of expressing interest in and receiving any subsequently modified versions of such certain data.